"""
数据分析案例
某公司，有2份数据文件，现需要对其进行分析处理，计算每日的销售额并以柱状图表的形式进行展示。

实现步骤；
1.设计一个类，可以完成数据的封装【data_define.py】
2.设计一个抽象类，定义文件读取的相关功能，并使用子类实现具体功能【file_define.py】
3.渎取文件，生产数据对象【main.py】
4.进行数据需求的逻计算（计算每一天的销售额）【main.py】
5．邁过PyEcharts进行图形绘制【main.py】
"""
from data_define import Reader
from file_define import TextFileReader, JsonFileReader
from pyecharts.charts import Bar
from pyecharts.options import *
from pyecharts.globals import ThemeType





textFileReader = TextFileReader('./2011年1月销售数据.txt')
jsonFileReader = JsonFileReader('./2011年2月销售数据JSON.txt')

jan_data: list[Reader] = textFileReader.read_data()
feb_data = jsonFileReader.read_data()  # type:list[Reader]

# 将2个月份的数据合并为1个List来存储
all_data = jan_data + feb_data

# 开始进行数据计算
# ｛"2011-01-01"：1534，“2011-01-02"：300，“2011-01-03"：650｝
data_dict = {}
for record in all_data:
    if record.date in data_dict:
        # 当前日期已经有记录了，所以和老记录做累加即可
        data_dict[record.date] += record.money
    else:
        data_dict[record.date] = record.money

# print(data_dict)


# 可视化图标开始
bar = Bar(init_opts=InitOpts(theme=ThemeType.LIGHT))

# 添加数据
bar.add_xaxis(list(data_dict.keys()))
bar.add_yaxis("销售额", list(data_dict.values()),label_opts=LabelOpts(is_show=False))

# 设置全局样式
bar.set_global_opts(
    title_opts=TitleOpts(title="每日销售额"),
)

# 生成可视化图标
bar.render("./每日销售额柱状图.html")